The present invention relates to operating system functions and hardware implementation or acceleration of such functions.
Operating systems in computers enable the computers to communicate with external resources. The operating system typically handles direct control of items associated with computer usage including keyboard, display, disk storage, network facilities, printers, modems, etc. The operating system in a computer is typically designed to cause the central processing unit (xe2x80x9cCPUxe2x80x9d) to perform tasks including the managing of local and network file systems, memory, peripheral device drivers, and processes including application processes. Placing responsibility for all of these functions on the CPU imposes significant processing burdens on it, particularly when the operating system is sophisticated, as, for example, in the case of Windows NT (available from Microsoft Corporation, Redmond, Wash.), Unix (available from many sources, including from SCO Software, Santa Cruz, Calif., and, in a version called xe2x80x9cLinuxxe2x80x9d from Red Hat Software, Cambridge, Mass.), and NetWare (available from Novell, Provo, Utah). The more the burden is placed on the CPU to run processes other than those associated with applications, the less CPU time is available to run applications with the result that performance of the applications may be degraded. In addition, the throughput of devices external to the CPU is subject to the limitations imposed by the CPU when the operating system places responsibility for managing these devices on the CPU. Furthermore, reliability of the overall software-hardware system, including the CPU, running the operating system, in association with the devices, will depend, among other things, on the operating system. Owing to the inherent complexity of the operating system, unforeseen conditions may arise which may undermine stability of the overall software-hardware system.
Certain aspects of the present invention enumerated in this summary are the subjects of other applications filed on the same date herewith. In one aspect of the invention, there is provided an apparatus for handling service requests over a network, wherein the network utilizes a protocol. In this aspect, the apparatus includes: a network subsystem for receiving and transmitting network service requests using the network protocol; and a service subsystem, coupled to the network subsystem, for satisfying the network service requests. Also in this aspect, at least one of the network subsystem and the service subsystem is hardware-implemented; the other of the network subsystem and the service subsystem may optionally be hardware-accelerated. Alternatively, or in addition, the service subsystem may be hardware-accelerated.
In a related embodiment, the service requests include one of reading and writing data to long-term electronic storage; optionally, the network subsystem is hardware-accelerated. Also, optionally, the long-term storage is network disk storage accessible to computers over the network. Alternatively, the long-term storage is local disk storage that is accessible to a local computer but not to any other computers over the network. Also optionally, the long-term storage may be associated with the provision of E-Mail service over the network; or it may provide access to web pages over the network.
Similarly, the service requests may involve access of data in a storage system, and the service subsystem may include a hardware-implemented module for managing storage of the data in the storage system. Thus in one embodiment, such apparatus is a file server, wherein the data in the storage system are arranged in files, the service requests may involve requests for files in the storage system, and the service subsystem also includes a hardware-implemented module for managing a file system associated with the storage system.
In another related aspect, the protocol includes a file system protocol, and the file system protocol defines operations including file read and file write. The apparatus may be a web server, wherein the data in the storage system may include web pages, and the service requests may involve requests for web pages in the storage system. Similarly, the protocol may include IP. In a further related aspect, the storage system has a storage protocol and the service subsystem includes a hardware-implemented module for interfacing with the storage system.
In accordance with another aspect, a subsystem for receiving and transmitting data over a network, the network using a protocol having at least one of layers 3 and 4. In this aspect, the subsystem includes: a receiver that receives encapsulated data from the network and de-encapsulates such data in accordance with the protocol; and a transmitter that encapsulates data in accordance with the protocol and transmits the encapsulated data over the network.
At least one of the receiver and the transmitter is hardware-implemented; alternatively, or in addition, at least one of the receiver and the transmitter is hardware-accelerated. In a further embodiment, the network uses the TCP/IP protocol. In a related embodiment, the data is received over the network in packets, each packet having a protocol header, and the subsystem also includes a connection identifier that determines a unique connection from information contained within the protocol header of each packet received by the receiver. In another related embodiment, encapsulated data is associated with a network connection, and the subsystem further includes a memory region, associated with the network connection, that stores the state of the connection.
In accordance another related aspect, there is provided a service subsystem for interfacing a storage arrangement with a network over which may be generated a storage access request. The service subsystem of this aspect includes: a service module that receives network service requests and fulfills such service requests and in doing so may issue data storage access requests; a file system module, coupled to the service module, that receives data storage access requests from the service module and fulfills such storage access requests and in doing so may issue storage arrangement access requests; and a storage module, coupled to the file system module, that receives storage arrangement access requests from the file system module and controls the storage arrangement to fulfill such storage arrangement access requests.
At least one of the modules is hardware-implemented; alternatively, or in addition, at least one of the modules is hardware-accelerated. In a related embodiment, the service module includes: a receive control engine that receives network service requests, determines whether such requests are appropriate, and if so, responds if information is available, and otherwise issues a data storage access request; and a transmit control engine that generates network service responses based on instructions from the receive control engine, and, in the event that there is a data storage access response to the data storage access request, processes the data storage access response.
At least one of the engines is hardware-implemented; alternatively, or in addition, at least one of the engines is hardware-accelerated. In other related embodiments, the service subsystem is integrated directly in the motherboard of a computer or integrated into an adapter card that may be plugged into a computer.
In accordance with another related aspect, there is provided a service module that receives network service requests and fulfills such service requests. The service module includes: a receive control engine that receives network service requests, determines whether such requests are appropriate, and if so, responds if information is available, and otherwise issues a data storage access request; and a transmit control engine that generates network service responses based on instructions from the receive control engine, and, in the event that there is a data storage access response to the data storage access request, processes the data storage access response;
At least one of the engines is hardware-implemented; alternatively, or in addition, at least one of the engines is hardware-accelerated. In related embodiments, the network service requests are in the CIFS protocol, the SMB protocol, the HTTP protocol, the NFS protocol, the FCP. protocol, or the SMTP protocol. In a further related embodiment, the service module includes an authentication engine that determines whether a network request received by the receiver has been issued from a source having authority to issue the request. In yet a further embodiment, the authentication engine determines whether a network request received by the receiver has been issued from a source having authority to perform the operation requested. Also, the service module may be integrated directly in the motherboard of a computer or integrated into an adapter card that may be plugged into a computer.
In accordance with another aspect, there is provided a file system module that receives data storage access requests and fulfills such data storage access requests. The file system module includes: a receiver that receives and interprets such data storage access requests and in doing so may issue storage device access requests; and a transmitter, coupled to the receiver, that constructs and issues data storage access responses, wherein such responses include information when appropriate based on responses to the storage device access requests.
At least one of the receiver and the transmitter is hardware-implemented; alternatively, or in addition, at least one of the receiver and the transmitter is hardware-accelerated. In a further embodiment, the storage device access requests are consistent with the protocol used by a storage device to which the module may be coupled. In yet further embodiments, the protocol is NTFS, HPFS, FAT, FAT16, or FAT32. In another related embodiment, the file system module also includes a file table cache, coupled to the receiver, that stores a table defining the physical location of files in a storage device to which the module may be coupled. In various embodiments, the protocol does not require files to be placed in consecutive physical locations in a storage device. In other embodiments, the file system module is integrated directly in the motherboard of a computer or into an adapter card that may be plugged into a computer.
In another aspect, there is provided a storage module that receives storage device access requests from a request source and communicates with a storage device controller to fulfill such storage access requests. The storage module includes: a storage device request interface that receives such storage device access requests and translates them into a format suitable for the storage device controller; and a storage device acknowledge interface that takes the responses from the storage device controller and translates such responses into a format suitable for the request source.
At least one of the storage device request interface and the storage device acknowledge interface is hardware-implemented; alternatively, or in addition, at least one of the storage device request interface and the storage device acknowledge interface is hardware-accelerated. In a further embodiment, the storage module also includes a cache controller that maintains a local copy of a portion of data contained on the storage device to allow fast-read access to the portion of data. In other related embodiments, the storage device request interface and the storage device acknowledge interface are coupled to a port; and the port permits communication with the storage device controller over a fiber-optic channel or utilizing a SCSI-related protocol. In further embodiments, the storage module is integrated directly in the motherboard of a computer or integrated into an adapter card that may be plugged into a computer.
In accordance with a further aspect of the invention, there is provided a system for interfacing a storage arrangement with a line on which may be placed a storage access request. The system in this aspect includes: a service receive block, coupled to the storage arrangement, that processes the storage access request, generates, where necessary, an access to the storage arrangement, and causes the generation of a response; a file table cache, coupled to the receive block, that stores a table defining the physical location of files in the storage arrangement; and a service transmit block, coupled to the service receive block, for transmitting the response.
At least one of the service receive block and the service transmit block is hardware-implemented; alternatively, or in addition, at least one of the service receive block and the service transmit block is hardware-accelerated. In a further embodiment, the system also includes response information memory, coupled to each of the service receive block and the service transmit block, which memory stores information present in a header associated the request, which information is used by the service transmit block in constructing the response. In another related embodiment, the storage access request is a network request. In yet another embodiment, the storage access request is a generated by a local processor to which the line is coupled.
In another aspect, there is provided a process for handling storage access requests from multiple clients. The process includes: testing for receipt of a storage access request from any of the clients; and testing for completion of access to storage pursuant to any pending request. In accordance with this embodiment, testing for receipt of a storage access request and testing for completion of access to storage are performed in a number of threads independent of the number of clients. In a further embodiment, the process also includes, conditioned on a positive determination from testing for receipt of a request, processing the request that gave rise to the positive determination and initiating storage access pursuant to such request. In a related embodiment, the process also includes, conditioned on a positive determination from testing for completion of access to storage pursuant to a pending request, sending a reply to the client issuing such pending request. In yet another related embodiment, the number of threads is fewer than three. In fact the entire process may be embodied in a single thread.
In another aspect, there is provided a scalable apparatus for handling service requests over a network, wherein the network utilizes a protocol. The apparatus of this aspect includes: a first plurality of network subsystems for receiving and transmitting network service requests using the network protocol; and a second plurality of service subsystems, for satisfying the network service requests.
Each one of the network subsystems and the service subsystems being one of hardware-implemented or hardware-accelerated. In addition, the apparatus includes an interconnect coupling each of the first plurality of network subsystems to each of the second plurality of service subsystems. In a related embodiments, the interconnect is a switch or the interconnect is a bus.
In a related aspect, there is provided a scalable service subsystem for interfacing a storage arrangement with a network over which may be generated a storage access request. The service subsystem includes: a first plurality of service modules that receive network service requests and fulfill such service requests and in doing so may issue data storage access requests; and a second plurality of file system modules that receive data storage access requests and fulfill such storage access requests and in doing so may issue storage arrangement access requests;
Each one of the service modules and the file system modules is one of hardware-implemented or hardware-accelerated. The service subsystem also includes an interconnect coupling each of the first plurality of service modules to each of the second plurality of file system modules. In related embodiments, the interconnect is a switch or the interconnect is a bus. In a further embodiment, the scalable service subsystem includes a third plurality of storage modules that receive storage arrangement access requests controls the storage arrangement to fulfill such storage arrangement access requests, and each one of the storage modules is one of hardware-implemented or hardware-accelerated; also the service subsystem includes a second interconnect coupling each of the file system modules to each of the storage modules. Similarly, in related embodiments, each of the interconnect and the second interconnect is a switch or each of the interconnect and the second interconnect is a bus.
In accordance with a further related aspect of the invention, there is provided an apparatus for handling service requests over a network, wherein the network utilizes a protocol. The apparatus in this aspect includes: a network subsystem (a) for receiving, via a network receive interface, service requests using the network protocol and forwarding such requests to a service output and (b) for receiving, via a service input, data to satisfy network requests and transmitting, via a network transmit interface, such data using the network protocol. The apparatus also includes a service subsystem having (a) a service request receive interface coupled to the service output of the network subsystem and (b) a service request transmit interface coupled to the service input of the network subsystem for delivering data to the network subsystem satisfying the network service requests. The apparatus is configured so that a first data path runs in a first direction from the network receive interface though the network subsystem via the service output to the service subsystem and a second data path runs in a second direction from the service subsystem into the network subsystem at the service input and through the network subsystem to the network transmit interface.
In accordance with yet another related aspect, the service subsystem includes a service module, a file system module, and a storage module, wherein: the service module is coupled to the network subsystem, the file system module is coupled to the service module, the storage module is coupled to the file system module and has an interface with a file storage arrangement; and each of the service module, the file system module, and the storage module has (i) a first input and a first output corresponding to the first data path and (ii) a second input and a second output corresponding to the second data path. Optionally, the apparatus may be implemented on a number of circuit boards. For example, a first circuit board may be used to implement the network subsystem and a second circuit board may be used to implement the file system module. The other modules may be disposed in convenient locations; for example, the service module may be on the second circuit board with the file system module, and the storage module may optionally be on a third circuit board.